* <programlisting>
* /* Theme all widgets defining the class entry */
* .entry {
- * foreground-color: #39f1f9;
+ * color: #39f1f9;
* }
*
* /* Theme spinbuttons' entry */
* GtkSpinButton.entry {
- * foreground-color: #900185;
+ * color: #900185;
* }
* </programlisting>
* </example>
* <programlisting>
* /* Theme any label within a notebook */
* GtkNotebook GtkLabel {
- * foreground-color: #f90192;
+ * color: #f90192;
* }
*
* /* Theme labels within notebook tabs */
* GtkNotebook tab:nth-child GtkLabel {
- * foreground-color: #703910;
+ * color: #703910;
* }
*
* /* Theme labels in the any first notebook
* tab, both selectors are equivalent */
* GtkNotebook tab:nth-child(first) GtkLabel,
* GtkNotebook tab:first-child GtkLabel {
- * foreground-color: #89d012;
+ * color: #89d012;
* }
* </programlisting>
* </example>
* </row>
* <row>
* <entry>background-color</entry>
- * <entry morerows="3"><programlisting>color</programlisting></entry>
- * <entry morerows="3">#GdkRGBA</entry>
- * <entry morerows="3">
+ * <entry morerows="1"><programlisting>color</programlisting></entry>
+ * <entry morerows="1">#GdkRGBA</entry>
+ * <entry morerows="1">
* <programlisting>
* background-color: #fff;
- * foreground-color: @color-name;
- * text-color: shade (@color-name, 0.5);
- * base-color: mix (@color-name, #f0f, 0.8);</programlisting>
+ * color: @color-name;
+ * background-color: shade (@color-name, 0.5);
+ * color: mix (@color-name, #f0f, 0.8);</programlisting>
* </entry>
* </row>
* <row>
- * <entry>foreground-color</entry>
- * </row>
- * <row>
- * <entry>text-color</entry>
- * </row>
- * <row>
- * <entry>base-color</entry>
+ * <entry>color</entry>
* </row>
* <row>
* <entry>font</entry>
"*,\n"
"GtkTreeView > GtkButton {\n"
" background-color: @bg_color;\n"
- " foreground-color: @fg_color;\n"
- " text-color: @text_color; \n"
- " base-color: @base_color; \n"
+ " color: @fg_color;\n"
" border-color: shade (@bg_color, 0.7);\n"
" padding: 2 2; \n"
"}\n"
"\n"
"*:prelight {\n"
" background-color: shade (@bg_color, 2.0);\n"
- " foreground-color: shade (@fg_color, 1.3);\n"
- " text-color: @selected_fg_color;\n"
- " base-color: @selected_bg_color;\n"
+ " color: shade (@fg_color, 1.3);\n"
"}\n"
"\n"
"*:selected {\n"
" background-color: @selected_bg_color;\n"
- " foreground-color: @selected_fg_color;\n"
+ " color: @selected_fg_color;\n"
"}\n"
"\n"
"*:insensitive {\n"
" background-color: shade (@bg_color, 0.7);\n"
- " foreground-color: shade (@fg_color, 0.7);\n"
+ " color: shade (@fg_color, 0.7);\n"
"}\n"
"\n"
- "GtkTreeView, GtkIconView {\n"
+ "GtkTreeView, GtkIconView, GtkTextView {\n"
" background-color: @base_color;\n"
- " foreground-color: @text_color;\n"
+ " color: @text_color;\n"
"}\n"
"\n"
"GtkTreeView > row {\n"
" background-color: @base_color;\n"
- " foreground-color: @text_color;\n"
+ " color: @text_color;\n"
"}\n"
"\n"
"GtkTreeView > row:nth-child(odd) { \n"
"\n"
".tooltip {\n"
" background-color: @tooltip_bg_color; \n"
- " foreground-color: @tooltip_fg_color; \n"
+ " color: @tooltip_fg_color; \n"
"}\n"
"\n"
".button,\n"
".button:prelight,\n"
".slider:prelight {\n"
" background-color: @selected_bg_color;\n"
- " foreground-color: @selected_fg_color;\n"
+ " color: @selected_fg_color;\n"
" border-color: shade (@selected_bg_color, 0.7);\n"
"}\n"
"\n"
".entry {\n"
" border-style: inset;\n"
" border-width: 2;\n"
+ " background-color: @base_color;\n"
+ " color: @text_color;\n"
+ "}\n"
+ ".check, .radio {\n"
+ " background-color: @base_color;\n"
+ " color: @text_color;\n"
+ "}\n"
+ "\n"
+ ".menu.check,\n"
+ ".menu.radio {\n"
+ " color: @fg_color;\n"
+ "}\n"
+ "\n"
+ ".menu:hover {\n"
+ " background-color: @selected_bg_color;\n"
+ " border-style: none;\n"
"}\n"
"\n"
".viewport {\n"
break;
case GTK_RC_FG:
gtk_style_context_get (context, state,
- "foreground-color", &color,
+ "color", &color,
NULL);
dest = &style->fg[state];
break;
case GTK_RC_TEXT:
gtk_style_context_get (context, state,
- "text-color", &color,
+ "color", &color,
NULL);
dest = &style->text[state];
break;
case GTK_RC_BASE:
gtk_style_context_get (context, state,
- "base-color", &color,
+ "background-color", &color,
NULL);
dest = &style->base[state];
break;
for (state = GTK_STATE_NORMAL; state <= GTK_STATE_INSENSITIVE; state++)
{
- set_color (style, priv->context, state, GTK_RC_BG);
- set_color (style, priv->context, state, GTK_RC_FG);
- set_color (style, priv->context, state, GTK_RC_BASE);
- set_color (style, priv->context, state, GTK_RC_TEXT);
+ if (gtk_style_context_has_class (priv->context, "entry"))
+ {
+ gtk_style_context_save (priv->context);
+ gtk_style_context_remove_class (priv->context, "entry");
+ set_color (style, priv->context, state, GTK_RC_BG);
+ set_color (style, priv->context, state, GTK_RC_FG);
+ gtk_style_context_restore (priv->context);
+
+ set_color (style, priv->context, state, GTK_RC_BASE);
+ set_color (style, priv->context, state, GTK_RC_TEXT);
+ }
+ else
+ {
+ gtk_style_context_save (priv->context);
+ gtk_style_context_add_class (priv->context, "entry");
+ set_color (style, priv->context, state, GTK_RC_BASE);
+ set_color (style, priv->context, state, GTK_RC_TEXT);
+ gtk_style_context_restore (priv->context);
+
+ set_color (style, priv->context, state, GTK_RC_BG);
+ set_color (style, priv->context, state, GTK_RC_FG);
+ }
}
if (style->font_desc)
gtk_style_context_add_class (context, "slider");
gtk_style_context_add_class (context, "scrollbar");
}
+ else if (strcmp (detail, "menuitem") == 0)
+ gtk_style_context_add_class (context, "menu");
else if (g_str_has_prefix (detail, "cell"))
{
GtkRegionFlags row, col;
gdouble width,
gdouble height)
{
- GdkRGBA *fg_color, *base_color, *text_color;
+ GdkRGBA *fg_color, *bg_color;
const GtkWidgetPath *path;
GtkStateFlags flags;
gint exterior_size, interior_size, thickness, pad;
cairo_save (cr);
gtk_theming_engine_get (engine, flags,
- "foreground-color", &fg_color,
- "base-color", &base_color,
- "text-color", &text_color,
+ "color", &fg_color,
+ "background-color", &bg_color,
NULL);
exterior_size = MIN (width, height);
cairo_set_line_width (cr, 1.0);
cairo_rectangle (cr, x + 0.5, y + 0.5, exterior_size - 1, exterior_size - 1);
- gdk_cairo_set_source_rgba (cr, base_color);
+ gdk_cairo_set_source_rgba (cr, bg_color);
cairo_fill_preserve (cr);
- if (gtk_theming_engine_has_class (engine, "cell"))
- gdk_cairo_set_source_rgba (cr, text_color);
- else
- gdk_cairo_set_source_rgba (cr, fg_color);
+ gdk_cairo_set_source_rgba (cr, fg_color);
cairo_stroke (cr);
}
- if (gtk_theming_engine_has_class (engine, "menu"))
- gdk_cairo_set_source_rgba (cr, fg_color);
- else
- gdk_cairo_set_source_rgba (cr, text_color);
+ gdk_cairo_set_source_rgba (cr, fg_color);
if (flags & GTK_STATE_FLAG_INCONSISTENT)
{
cairo_restore (cr);
gdk_rgba_free (fg_color);
- gdk_rgba_free (base_color);
- gdk_rgba_free (text_color);
}
static void
gdouble height)
{
GtkStateFlags flags;
- GdkRGBA *base_color, *fg_color, *text_color;
+ GdkRGBA *fg_color, *bg_color;
const GtkWidgetPath *path;
gint exterior_size, interior_size, pad, thickness;
gdouble radius;
cairo_save (cr);
gtk_theming_engine_get (engine, flags,
- "foreground-color", &fg_color,
- "base-color", &base_color,
- "text-color", &text_color,
+ "color", &fg_color,
+ "background-color", &bg_color,
NULL);
exterior_size = MIN (width, height);
if (!gtk_theming_engine_has_class (engine, "menu"))
{
- gdk_cairo_set_source_rgba (cr, base_color);
+ gdk_cairo_set_source_rgba (cr, bg_color);
cairo_arc (cr,
x + exterior_size / 2.,
cairo_fill_preserve (cr);
- if (gtk_theming_engine_has_class (engine, "cell"))
- gdk_cairo_set_source_rgba (cr, text_color);
- else
- gdk_cairo_set_source_rgba (cr, fg_color);
+ gdk_cairo_set_source_rgba (cr, fg_color);
cairo_set_line_width (cr, 1.);
cairo_stroke (cr);
}
- if (gtk_theming_engine_has_class (engine, "menu"))
- gdk_cairo_set_source_rgba (cr, fg_color);
- else
- gdk_cairo_set_source_rgba (cr, text_color);
+ gdk_cairo_set_source_rgba (cr, fg_color);
/* FIXME: thickness */
thickness = 1;
cairo_restore (cr);
gdk_rgba_free (fg_color);
- gdk_rgba_free (base_color);
- gdk_rgba_free (text_color);
+ gdk_rgba_free (bg_color);
}
static void
flags = gtk_theming_engine_get_state (engine);
gtk_theming_engine_get (engine, flags,
- "foreground-color", &fg_color,
+ "color", &fg_color,
NULL);
if (flags & GTK_STATE_FLAG_INSENSITIVE)
gdouble width,
gdouble height)
{
- GdkRGBA *bg_color, *base_color;
+ GdkRGBA *bg_color;
cairo_pattern_t *pattern;
GtkStateFlags flags;
gboolean running;
gtk_theming_engine_get (engine, flags,
"background-image", &pattern,
"background-color", &bg_color,
- "base-color", &base_color,
"border-radius", &radius,
NULL);
{
cairo_pattern_t *other_pattern;
GtkStateFlags other_flags;
- GdkRGBA *other_bg, *other_base;
+ GdkRGBA *other_bg;
cairo_pattern_t *new_pattern = NULL;
if (flags & GTK_STATE_FLAG_PRELIGHT)
gtk_theming_engine_get (engine, other_flags,
"background-image", &other_pattern,
"background-color", &other_bg,
- "base-color", &other_base,
NULL);
if (pattern && other_pattern)
else if (pattern || other_pattern)
{
cairo_pattern_t *p;
- GdkRGBA *c;
+ const GdkRGBA *c;
gdouble x0, y0, x1, y1, r0, r1;
gint n, i;
if (pattern)
{
p = pattern;
- c = gtk_theming_engine_has_class (engine, "entry") ? other_base : other_bg;
+ c = other_bg;
progress = 1 - progress;
}
else
{
p = other_pattern;
- c = gtk_theming_engine_has_class (engine, "entry") ? base_color : bg_color;
+ c = bg_color;
}
if (cairo_pattern_get_type (p) == CAIRO_PATTERN_TYPE_LINEAR)
const GdkRGBA *color, *other_color;
/* Merge just colors */
- if (gtk_theming_engine_has_class (engine, "entry"))
- {
- color = base_color;
- other_color = other_base;
- }
- else
- {
- color = bg_color;
- other_color = other_bg;
- }
+ color = bg_color;
+ other_color = other_bg;
new_pattern = cairo_pattern_create_rgba (CLAMP (color->red + ((other_color->red - color->red) * progress), 0, 1),
CLAMP (color->green + ((other_color->green - color->green) * progress), 0, 1),
if (other_bg)
gdk_rgba_free (other_bg);
-
- if (other_base)
- gdk_rgba_free (other_base);
}
cairo_rectangle (cr, 0, 0, 1, 1);
cairo_pattern_destroy (pattern);
}
else
- {
- if (gtk_theming_engine_has_class (engine, "entry"))
- gdk_cairo_set_source_rgba (cr, base_color);
- else
- gdk_cairo_set_source_rgba (cr, bg_color);
- }
+ gdk_cairo_set_source_rgba (cr, bg_color);
if (gtk_theming_engine_has_class (engine, "tooltip"))
{
cairo_restore (cr);
- gdk_rgba_free (base_color);
gdk_rgba_free (bg_color);
}
gdouble height)
{
GtkStateFlags flags;
- GdkRGBA *bg_color, *fg_color, *base_color;
+ GdkRGBA *bg_color, *fg_color;
double vertical_overshoot;
int diameter;
double radius;
flags = gtk_theming_engine_get_state (engine);
gtk_theming_engine_get (engine, flags,
- "foreground-color", &fg_color,
+ "color", &fg_color,
"background-color", &bg_color,
- "base-color", &base_color,
NULL);
line_width = 1;
cairo_set_line_width (cr, line_width);
- if (flags & GTK_STATE_FLAG_PRELIGHT)
- gdk_cairo_set_source_rgba (cr, fg_color);
- else
- gdk_cairo_set_source_rgba (cr, base_color);
+ gdk_cairo_set_source_rgba (cr, fg_color);
cairo_fill_preserve (cr);
cairo_restore (cr);
- gdk_rgba_free (base_color);
gdk_rgba_free (fg_color);
gdk_rgba_free (bg_color);
}
flags = gtk_theming_engine_get_state (engine);
gtk_theming_engine_get (engine, flags,
- "foreground-color", &color,
+ "color", &color,
NULL);
gtk_theming_engine_get_style (engine,
flags = gtk_theming_engine_get_state (engine);
gtk_theming_engine_get (engine, flags,
- "foreground-color", &fg_color,
+ "color", &fg_color,
NULL);
screen = gtk_theming_engine_get_screen (engine);